// ==================== 基础设施层入口 ====================
// 职责：统一导出基础设施层的所有核心模块

// ==================== 渲染引擎 ====================
export { RenderEngine } from './core/RenderEngine.js'

// ==================== 存储服务 ====================
export { IndexedDBStorage } from './storage/IndexedDBStorage.js'

// ==================== 工具类 ====================
export { Geometry } from './utils/Geometry.js'

// ==================== 基础设施层管理器 ====================
/**
 * 基础设施层管理器
 * 负责统一管理所有基础设施服务
 */
export class InfrastructureManager {
  /**
   * 构造函数
   */
  constructor() {
    // ==================== 核心服务实例 ====================
    this.renderEngine = null
    this.storage = null
    
    // ==================== 初始化状态 ====================
    this.isInitialized = false
  }
  
  /**
   * 初始化基础设施层
   * @param {Object} options - 初始化选项
   */
  async initialize(options = {}) {
    try {
      console.log('正在初始化基础设施层...')
      
      // 初始化存储服务
      this.storage = new IndexedDBStorage(
        options.dbName || 'DesignAppDB',
        options.dbVersion || 1
      )
      await this.storage.initialize()
      
      // 初始化渲染引擎（需要Canvas元素）
      if (options.canvas) {
        this.renderEngine = new RenderEngine(options.canvas, {
          enableHighDPI: options.enableHighDPI !== false,
          enableAntialiasing: options.enableAntialiasing !== false,
          maxFPS: options.maxFPS || 60,
          enableVSync: options.enableVSync !== false
        })
      }
      
      this.isInitialized = true
      console.log('基础设施层初始化完成')
      
    } catch (error) {
      console.error('基础设施层初始化失败:', error)
      throw error
    }
  }
  
  /**
   * 获取渲染引擎
   * @returns {RenderEngine|null} 渲染引擎实例
   */
  getRenderEngine() {
    return this.renderEngine
  }
  
  /**
   * 获取存储服务
   * @returns {IndexedDBStorage|null} 存储服务实例
   */
  getStorage() {
    return this.storage
  }
  
  /**
   * 检查是否已初始化
   * @returns {boolean} 是否已初始化
   */
  isReady() {
    return this.isInitialized
  }
  
  /**
   * 清理资源
   */
  cleanup() {
    if (this.renderEngine) {
      this.renderEngine.cleanup()
      this.renderEngine = null
    }
    
    if (this.storage) {
      this.storage.close()
      this.storage = null
    }
    
    this.isInitialized = false
    console.log('基础设施层已清理')
  }
}

// ==================== 默认导出 ====================
export default InfrastructureManager
